package main

import "fmt"

// 在main函数外部定义结构体
// 名称通常是首字母大写
type Person struct {
	// 字段名称通常大写
	Name   string
	Age    int
	Gender string
}

// 练习：定义结构体Product，包含的字段有编号、名称、价格、是否在售、上架时间、系列的名称（切片）；通过以上结构体创建结构体变量
type Product struct {
	Id         int
	Title      string
	Price      float64
	Is_onsale  bool
	Shelf_time string
	Series     []string
}

// 定义整型
// 相当于给int起别名
type myInt int

func main() {
	var a myInt = 20
	fmt.Println(a)
	/*
		var p1 Product = Product{
			Id:         101,
			Title:      "iPhone16",
			Price:      5777.90,
			Is_onsale:  true,
			Shelf_time: "2024-10-20",
			Series:     []string{"iPhone16", "iPhone16Max", "iPhone16Pro"},
		}
		fmt.Println(p1)
	*/
	/*
		// 创建结构体变量
		var p1 Person = Person{
			Name:   "小明",
			Age:    18,
			Gender: "男",
		}
		p2 := Person{"小红", 20, "女"}
		fmt.Println(p1)
		fmt.Println(p2)

		var p3 Person
		// 单独访问，给字段赋值
		p3.Name = "小明"
		p3.Age = 21
		p3.Gender = "男"
		fmt.Println(p3)
	*/
	// 匿名结构体
	book := struct {
		Title string
		Price float64
	}{
		Title: "Go开发",
		Price: 89.50,
	}
	fmt.Println(book)
}
